Analisis de Datos

Estructura de los archivos

La carpeta analisis_datos se estructura de la siguiente manera:

analisis_datos/
        datos/
                año_mes/
                        dia/
                                estacion.csv
        datos_pronosticados/
                registro_fechas.csv
                año_mes/
                        dia/
                                estacion.csv
        datos_descargados/
                omixon/
                        año_mes/
        docs/
        js/
        datos_pronosticados.py
        datos_omixon.py
        estaciones_*.csv
        meteogramas.html
        tablas.py
datos/:
En esta carpeta se almacenan los datos reales de las estaciones meteorológicas.
datos_pronosticados/:
En esta carpeta se almacenan los datos que se extraen de la salida del WRF, en los puntos de interés. Ademas se genera un registro en registro_fechas.csv con todas las fechas en donde hay datos pronosticados.
datos_descargados:
En esta carpeta se almacenan los datos crudos descargados de las diferentes estaciones meteorológicas.
docs/:
Documentación de este programa
js/:
Archivos auxiliares para meteogramas.html
datos_pronosticados.py:
Script que extrae los datos de la salida del WRF y los almacena en datos_pronosticados/
datos_omixon.py:
Script que extrae los datos de los CSV descargados de omixon y los almacena en datos_pronosticados/
estaciones_*.csv:
Estaciones de interés para buscar los datos en la salida del WRF. Tiene que tener las columnas [Estacion, Latitud, Longitud]
meteogramas.html:
Visualización de los datos
tablas.py:
Funciones para genera tablas de datos para poder graficar y analisar.

Almacenar Datos

Datos Pronosticados

Extrae los datos a partir de la salida del WRF y los guarda en la carpeta datos/AAAA_MM/DD/C/

Paquetes necesarios:

Argumentos:
  • datoswrf : ruta de la salida test.ctl del WRF
  • estacionescsv : ruta del csv con las estaciones de donde vamos a almacenar los datos. Tiene que tener las columnas [Estacion, Latitud, Longitud]
  • configuracion : nombre que identifique a la configuración de parametrizaciones del WRF (A, B, C, D o E en el caso del WRF operativo en el LH)

Ejecutar:

python datos_pronosticados.py --datoswrf="../ARWpost/test.ctl" --estacionescsv="estaciones.csv" --configuracion=A

Los datos se almacenan como datos/año_mes/dia/configuracion/estacion.csv

Variables almacenadas:

  • t2 : temperatura (ºC) a 2m de altura
  • td2 : temperatura en punto de rocío (ºC) a 2m de altura
  • prec : precipitación (mm) por hora
  • prec_acum : precipitación (mm) acumulada diaria
  • rh2 : humedad relativa (%) a 2m de altura
  • ws10 : intensidad del viento (m/s) a 10m de altura
  • wd10 : direccion del viento (º, 0º es viento desde dirección norte) a 10m de altura
  • u10m : componente de oeste a este del viento (m/s) a 10m de altura
  • v10m : componente de sur a norte del viento (m/s) a 10m de altura
  • max_dbz : reflectividad máxima (-)
  • psfc : presión en la superficie (hPa)
  • slp : presión a nivel del mar (hPa)
  • cl : promedio de nubosidad en todos los niveles (%)
  • clflo : nubosidad baja (%)
  • clfmi : nubosidad media (%)
  • clfhi : nubosidad alta (%)
  • hail : granizo (mm) por hora
  • hail_acum : granizo (mm) acumulado diario
analisis_datos.datos_pronosticados.almacenar_datos(estaciones_input, test_input, configuracion)

Almacena los datos de las estaciones de estaciones_input para el conjunto de datos test_input

analisis_datos.datos_pronosticados.granizo(estacion, i, ga)

Devuelve el granizo (mm) en el momento i para la estacion de la entrada de grads ga

analisis_datos.datos_pronosticados.nubosidad(estacion, i, ga)

Devuelve la nubosidad en todos los niveles (%) en el momento i para la estacion de la entrada de grads ga

analisis_datos.datos_pronosticados.obtener_variable(variable, estacion, i, ga)

Devuelve la variable en el momento i para la estacion de la entrada de grads ga

analisis_datos.datos_pronosticados.precipitacion(estacion, i, ga)

Devuelve la precipitacion (mm) en el momento i para la estacion de la entrada de grads ga

analisis_datos.datos_pronosticados.registro_fechas()

Crea registro de las fechas que hay datos pronosticados

Datos de las estaciones de Omixon

Extrae los datos a partir de los CSV descargados de Omixon y los guarda en la carpeta datos/

Paquetes necesarios:

Argumentos:

  • datosomixon : ruta de la carpeta en donde se ubican los .CSV descargados de Omixon

Ejecutar:

python datos_omixon.py --datosomixon="datos_descargados/omixon/2017_05/"

Los datos se almacenan como datos/año_mes/dia/obs/estacion.csv. No importa los nombres de los .CSV ni el período de tiempo que contiene cada archivo, el programa se fija a que estación corresponde el archivo y las fechas.

analisis_datos.datos_omixon.direccion_viento(fecha, data)

Devuelve la direccion del viento (º, 0º es viento desde dirección norte) para la fecha del conjunto de datos data

analisis_datos.datos_omixon.humedad(fecha, data)

Devuelve la humedad relativa (%) para la fecha del conjunto de datos data

analisis_datos.datos_omixon.precipitacion(fecha, data)

Devuelve la precipitación (mm) para la fecha del conjunto de datos data

analisis_datos.datos_omixon.presion(fecha, data)

Devuelve la Presión en la superficie (hPa) para la fecha del conjunto de datos data

analisis_datos.datos_omixon.temperatura(fecha, data)

Devuelve la temperatura (ºC) para la fecha del conjunto de datos data

analisis_datos.datos_omixon.velocidad_viento(fecha, data)

Devuelve la velocidad del viento (m/s) para la fecha del conjunto de datos data

Analisis

Generación de tablas para analisis.

Para usar desde la consola de python (preferentemente desde ipython), importar las siguientes librerias:

import tablas
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
import seaborn as sns
import matplotlib
matplotlib.style.use('ggplot')

Funciones:

  • tablas.tabla_estacion: datos de una estación entre una ventana de tiempo.
  • tablas.todas_estaciones: datos entre una ventana de tiempo para todas las estaciones.
  • tablas.variable_por_estacion: datos de una variable real y pronosticada para una estacion dada.
  • tablas.variable_todas_estaciones: datos de una variable real y pronosticada para todas las estaciones.
  • tablas.resumen_error_variable: estadisticas de una variable para cada estacion.
  • tablas.variable_por_estaciones: datos de todas las estaciones para una variable y opcion dada.

Para guardar un DataFrame en un archivo csv, usar la funcion:

datos.to_csv("ruta/nombre.csv")

Para más información del manejo de DataFrame:

Para información de como generar gráficos con los DataFrame:

Graficos con seaborn:

analisis_datos.tablas.resumen_error_variable(variable, fecha_inicio, fecha_fin)

Función que para una ventana de tiempo dada por fecha_inicio y fecha_fin, devuelve un DataFrame de analisis de la variable de pandas con las columnas:

  • Estacion,
  • Latitud,
  • Longitud,
  • Cantidad de registros,
  • BE,
  • SD,
  • MAE,
  • RMSE,
  • R,

Opciones para variable: las mismas que para variable_por_estacion

Las fechas tiene que ser un string en el formato AAAA-MM-DD.

analisis_datos.tablas.tabla_estacion(estacion, opcion, fecha_inicio, fecha_fin)

Función que para una estacion dada, devuelve un DataFrame de pandas con las mismas columnas que se almacena por día, pero para la ventana de tiempo dada por fecha_inicio y fecha_fin, y para una opcion dada (“obs”, “A”, “B”, etc.)

analisis_datos.tablas.todas_estaciones(opcion, fecha_inicio, fecha_fin)

Función que devuelve un DataFrame de pandas con las mismas columnas que se almacena por día, pero para la ventana de tiempo dada por fecha_inicio y fecha_fin, y para una opcion dada (“obs”, “A”, “B”, etc.) para todas las estaciones.

analisis_datos.tablas.variable_por_estacion(variable, estacion, fecha_inicio, fecha_fin)

Función que para una estacion dada, devuelve un DataFrame de pandas con las columnas:

  • Fecha,
  • obs,
  • pron,
  • error

con los datos de la variable dada en la ventada de tiempo dada por fecha_inicio y fecha_fin

Opciones para variable:

# opciones con salida diaria
- maxima
- minima
- amplitud
- t2_media
- prec_acum
# opciones con salida por hora
- t2
- prec
- ws10
- wd10

Las fechas tiene que ser un string en el formato AAAA-MM-DD.

analisis_datos.tablas.variable_por_estaciones(variable, opcion, fecha_inicio, fecha_fin)

Función que para una variable y una opcion dada, devuelve un DataFrame de pandas con las estaciones en las columnas, indexeado por las fechas y el valor de la variable en la ventada de tiempo dada por fecha_inicio y fecha_fin.

Opciones para variable: las mismas que para variable_por_estacion

Opciones para opcion:

- obs
- pron
- error

Las fechas tiene que ser un string en el formato AAAA-MM-DD.

analisis_datos.tablas.variable_todas_estaciones(variable, fecha_inicio, fecha_fin)

Función que para todas las estaciones, devuelve un DataFrame de pandas con las columnas:

  • Estacion,
  • Fecha,
  • obs,
  • pron,
  • error

con los datos de la variable dada en la ventada de tiempo dada por fecha_inicio y fecha_fin

Opciones para variable: las mismas que para variable_por_estacion

Las fechas tiene que ser un string en el formato AAAA-MM-DD.